package com.homework2;
/*
（2）货车要装载一批货物，货物由三种商品组成：电视、计算机和洗衣机，货车需要计算整批货物的重量。要求如下：
○1设计计算重量接口ComputeWeight，该接口有抽象方法double getWeight()；
○2定义三个类Television、Computer和WashMachine，这三个类均实现了接口ComputeWeight，重写了方法getWeight()，计算出自己的重量；
○3定义一个Truck类，该类中有一个用接口ComputeWeight声明的接口变量computeWeight，还有一个方法double weight()，
在该方法中让接口变量computeWeight回调了getWeight()方法；
○4编写主类，在主方法中定义Truck的对象truck，truck调用方法double weight()，
得到货车所载货物的重量之和，并输出。（货车的货物有三种，应该调用三次double weight()方法，并计算三次方法结果的和）
（若同学们有时间，可以自学一下对象数组，把这个例子用对象数组来实现）
（3）设计几种饮料类：茶类，可乐类，冰激凌类，果汁类，类中均包含方法，输出自己的饮料类型。设计甜品店类，该甜品店包含产品：茶、可乐、冰激凌和果汁，还有一种奶茶，该奶茶是这个甜品店的独有配方，其他甜品店没有。
编写主类，创建甜品店类的对象，输出这个甜品店所有的饮料。
（4）设计接口Speak，包含一个抽象方法void speak()。设计类Animal，类中有一个方法void animalSpeak(Speak speak)，在该方法中，接口变量speak回调了void speak()方法。
主类中创建Animal的三个对象dog、cat和tiger，且这三个对象均调用void  animalSpeak(Speak speak)方法，采用接口的匿名类的形式，创建实现了接口Speak的类的对象作为参数，回调void speak()方法，输出不同动物的叫声。
（5）教材139页，8.5上机实践，车站检查危险品的设备，如果发现危险品就发出警告。

 */
class Truck{
    ComputeWight computeWight;
    public double wight(){
        return computeWight.getWeight();
    }

    public ComputeWight getComputeWight() {
        return computeWight;
    }

    public void setComputeWight(ComputeWight computeWight) {
        this.computeWight = computeWight;
    }
}

public class Test {
    public static void main(String[] args) {
        Truck truck = new Truck();
        double sum=0;
        truck.setComputeWight(new WashMachine());
       sum+=truck.wight();
        truck.setComputeWight(new Television());
        sum+=truck.wight();
        truck.setComputeWight(new Computer());
        sum+=truck.wight();
        System.out.println(sum);
    }
}

class Television implements ComputeWight{
    @Override
    public double getWeight() {
        return 30;
    }
}
class Computer implements ComputeWight{
    @Override
    public double getWeight() {
        return 40;
    }
}

class  WashMachine implements ComputeWight{
    @Override
    public double getWeight() {
        return 50;
    }
}
